
package net.virtualearth.dev.webservices.v1.geocode;

import java.util.concurrent.Future;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.Response;
import javax.xml.ws.ResponseWrapper;
import net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocodeResponse;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.4-hudson-208-
 * Generated source version: 2.1
 * 
 */
@WebService(name = "IGeocodeService", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
@XmlSeeAlso({
    net.virtualearth.dev.webservices.v1.common.ObjectFactory.class,
    com.microsoft.schemas._2003._10.serialization.ObjectFactory.class,
    net.virtualearth.dev.webservices.v1.geocode.contracts.ObjectFactory.class,
    net.virtualearth.dev.webservices.v1.geocode.ObjectFactory.class,
    com.microsoft.schemas._2003._10.serialization.arrays.ObjectFactory.class
})
public interface IGeocodeService {


    /**
     * 
     * @param request
     * @return
     *     returns javax.xml.ws.Response<net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse>
     */
    @WebMethod(operationName = "Geocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode")
    @RequestWrapper(localName = "Geocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.Geocode")
    @ResponseWrapper(localName = "GeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse")
    public Response<net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse> geocodeAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        GeocodeRequest request);

    /**
     * 
     * @param request
     * @param asyncHandler
     * @return
     *     returns java.util.concurrent.Future<? extends java.lang.Object>
     */
    @WebMethod(operationName = "Geocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode")
    @RequestWrapper(localName = "Geocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.Geocode")
    @ResponseWrapper(localName = "GeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse")
    public Future<?> geocodeAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        GeocodeRequest request,
        @WebParam(name = "asyncHandler", targetNamespace = "")
        AsyncHandler<net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse> asyncHandler);

    /**
     * 
     * @param request
     * @return
     *     returns net.virtualearth.dev.webservices.v1.geocode.GeocodeResponse
     * @throws IGeocodeServiceGeocodeResponseSummaryFaultFaultMessage
     */
    @WebMethod(operationName = "Geocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode")
    @WebResult(name = "GeocodeResult", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
    @RequestWrapper(localName = "Geocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.Geocode")
    @ResponseWrapper(localName = "GeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.GeocodeResponse")
    public net.virtualearth.dev.webservices.v1.geocode.GeocodeResponse geocode(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        GeocodeRequest request)
        throws IGeocodeServiceGeocodeResponseSummaryFaultFaultMessage
    ;

    /**
     * 
     * @param request
     * @return
     *     returns javax.xml.ws.Response<net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocodeResponse>
     */
    @WebMethod(operationName = "ReverseGeocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/ReverseGeocode")
    @RequestWrapper(localName = "ReverseGeocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocode")
    @ResponseWrapper(localName = "ReverseGeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocodeResponse")
    public Response<ReverseGeocodeResponse> reverseGeocodeAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        ReverseGeocodeRequest request);

    /**
     * 
     * @param request
     * @param asyncHandler
     * @return
     *     returns java.util.concurrent.Future<? extends java.lang.Object>
     */
    @WebMethod(operationName = "ReverseGeocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/ReverseGeocode")
    @RequestWrapper(localName = "ReverseGeocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocode")
    @ResponseWrapper(localName = "ReverseGeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocodeResponse")
    public Future<?> reverseGeocodeAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        ReverseGeocodeRequest request,
        @WebParam(name = "asyncHandler", targetNamespace = "")
        AsyncHandler<ReverseGeocodeResponse> asyncHandler);

    /**
     * 
     * @param request
     * @return
     *     returns net.virtualearth.dev.webservices.v1.geocode.GeocodeResponse
     * @throws IGeocodeServiceReverseGeocodeResponseSummaryFaultFaultMessage
     */
    @WebMethod(operationName = "ReverseGeocode", action = "http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/ReverseGeocode")
    @WebResult(name = "ReverseGeocodeResult", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
    @RequestWrapper(localName = "ReverseGeocode", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocode")
    @ResponseWrapper(localName = "ReverseGeocodeResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts", className = "net.virtualearth.dev.webservices.v1.geocode.contracts.ReverseGeocodeResponse")
    public net.virtualearth.dev.webservices.v1.geocode.GeocodeResponse reverseGeocode(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/geocode/contracts")
        ReverseGeocodeRequest request)
        throws IGeocodeServiceReverseGeocodeResponseSummaryFaultFaultMessage
    ;

}
